"""
@project:python起步.py
@author:zhujiahui
@IDE:PyCharm
@time:2021-07-14-14:49
@Introduction:
"""
# ip存储与读取文件统计ip频率(京东3面题)
# ●生成一个大文件ips.txt,要求120000行，每行随即为172.25.254.0/24段的ip;
# ●读取ips.txt文件统计这个文件中ip出现频率前10的ip ;



# import random
#
# with open("ips.txt","w") as f1:
#     for i in range(120000):
#         f1.write(f"172.25.254.{random.randint(1,255)} \n")
# with open("ips.txt", "r") as f2:
#     ips_lst = f2.readlines()
#     ip_alive = {}
#     for ip in ips_lst:
#         if ip in ip_alive:
#             ip_alive[ip] += 1
#         else:
#             ip_alive[ip] = 1
# result =sorted(ip_alive.items(),key=lambda item: item[1], reverse=True)
# print(result[1:11])


# 1.对key值进行排序 使用以下语句
# sorted(dict1.keys())
#
# 2.sorted函数按照value值对字典进行排序
# sorted(dict1.items(),key=lambada item:item[1],reverse=True)
#
# key=lambda item: item[1]
# 使用匿名表达式重写key所代表的函数,按照元组的第二个元素进行排序
# reverse=True（False）:
# 按正序（倒序）排列，默认为倒序。




# 词频统计
# 已经有一个瓦尔登湖的文本，"Walden.txt"
# 统计这篇文章的词频(每个词出现的次数)
# 不统计标点符号
# The和the被统计成同一一个词(不区分大小写)
# 输出格式: {'the': 10, "is': 45....}

#re.sub:替换包
import re

with open("walden.txt","r+",encoding="utf-8")as fp:
    file = fp.read()
    file_lower = file.lower()

#将文件中的特殊符号转换为空格
    new_file = re.sub(r'[\d",\n/?+:.;!$-]', ' ', file_lower)

#将文件中每个单词分割
    new_dict = new_file.split()

#定义一个字典
    Dict = dict()
    for i in new_dict:
        if i in Dict:
            Dict[i] += 1

        else:
            Dict[i] = 1


    result = sorted(Dict.items(), key=lambda item: item[1], reverse=True)

     # for i,j in result:
    #     print(f"{i}总共在文章中出现了{j}次")
print(Dict)


#小知识
# a = 'i have three things in the world'
# # 每个单词首字母大写
# print(a.title())
# # 每个单词首字母小写
# print(a.lower())
# # 每个单词首字母大写
# print(a.upper())

s = '世之万物,吾爱有三：一曰为日,一曰为月,一曰为汝.日出昼也,月升夜也,爱汝恒也'
# 判断s是否以'世之万物'开头
# print(s.startswith('世之万物'))
# # 判断s是否以'爱汝恒也'结尾
# print(s.endswith('爱汝恒也'))
# # 查找s中'吾爱'的出现位置
# print(s.find('吾爱'))
# # 查找s中'吾爱'的出现位置
# print(s.index('吾爱'))
# # 从索引为9处开始查找'吾爱'的出现位置
# print(s.find('吾爱', 6))
# # 从索引为9处开始查找'吾爱'的出现位置
# #print(s.index('吾爱', 6))
# # 将字符串中所有月替换成月亮
# print(s.replace('月', '月亮'))
# # 将字符串中1个'一'替换成'1'
# print(s.replace('一', '1', 1))
# # 使用逗号对字符串进行分割
# print(s.split())
# # 使用逗号对字符串进行分割,只分割前2个
# print(s.split(',', 2))
# # 使用'*'作为分隔符将列表连接成字符串
# s_list = s.split(',')
# print(s_list)
# print('*'.join(s_list))

# s = '  the sun  '
# # 删除左边的空白
# print(s.lstrip())
# # 删除右边的空白
# print(s.rstrip())
# # 删除两边的空白
# print(s.strip())
# # 再次输出s，将会看到s并没有改变
# print(s)
# s = 'the moon'
# # 删除左边的t、h、o、n字符
# print(s.lstrip('thon'))
# # 删除右边的t、h、o、n字符
# print(s.rstrip('thon'))
# # 删除两边的t、h、o、n字符
# print(s.strip('thon'))
